package pri.zey.custom.tools;/**
 * Created by Administrator on 2016/3/16.
 */

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;

import java.util.HashMap;
import java.util.Map;

/**
 * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>类描述
 * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>属性描述
 * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>方法描述
 */
public class TSharedPreference {

    private final String SHAREDPREFERENCES = "DefaultPconfig";
    private SharedPreferences sharedPreferences;
    private SharedPreferences.Editor editor;
    private int[] MODES = new int[]{Activity.MODE_PRIVATE, //默认操作模式，代表该文件是私有数据，只能被应用本身访问，在该模式下，写入的内容会覆盖原文件的内容，如果想把新写入的内容追加到原文件中，可以使用Activity.MODE_APPEND
            Activity.MODE_WORLD_READABLE, //表示当前文件可以被其他应用读取，
            Activity.MODE_WORLD_WRITEABLE, //表示当前文件可以被其他应用写入；
            //如果希望文件被其他应用读和写，可以传入:Activity.MODE_WORLD_READABLE+Activity.MODE_WORLD_WRITEABLE
            Activity.MODE_APPEND//该模式会检查文件是否存在，存在就往文件追加内容，否则就创建新文件
    };

    private TSharedPreference(Context context){
        this.sharedPreferences = context.getSharedPreferences(SHAREDPREFERENCES, 0);
        this.editor = sharedPreferences.edit();
    }

    public static TSharedPreference getInstanst(Context context){
        return new TSharedPreference(context);
    }

    /**
     * SET
     * , values>存储到sharedname中
     * @param key 名
     * *
     * @param values 存储值
     */
    public  void Set(String key, Object values) {
        if (values instanceof String) {//String
            editor.putString(key, (String)values);
            Log.i("TAGSS", "SP String");
        }
        else if (values instanceof Integer) {//Integer
            editor.putInt(key, (Integer)values);
            Log.i("TAGSS", "SP Integer");
        }
        else if (values instanceof Boolean) {//Boolean
            editor.putBoolean(key, (Boolean)values);
            Log.i("TAGSS", "SP Boolean");
        }
        else if (values instanceof Float) {//Float
            editor.putFloat(key, (Float)values);
            Log.i("TAGSS", "SP Float");
        }
        else if (values instanceof Long) {//Long
            editor.putLong(key, (Long) values);
            Log.i("TAGSS", "SP Long");
        }
        editor.commit();
    }

    /**
     * GET
     * 获取sharedname 中的元素
     * @param key 名
     * *
     * @param values 默认值
     *
     * @return Map<String, Object>
     */
    public Map<String, Object> GetMap(String key, Object values) {
        Map<String, Object> map = new HashMap<String, Object>();
        if (values instanceof String) {//String
            map.put("values", sharedPreferences.getString(key, (String) values));
        }
        else if (values instanceof Integer) {//Integer
            map.put("values", sharedPreferences.getInt(key, (Integer) values));
        }
        else if (values instanceof Boolean) {//Boolean
            map.put("values", sharedPreferences.getBoolean(key, (Boolean) values));
        }
        else if (values instanceof Float) {//Float
            map.put("values", sharedPreferences.getFloat(key, (Float) values));
        }
        else if (values instanceof Long) {//Long
            map.put("values", sharedPreferences.getLong(key, (Long) values));
        }
        return map;
    }

    /**
     * GET
     * 获取sharedname 中的元素
     * @param key 名
     * *
     * @param DefaultValues 默认值
     * @return Object
     */
    public Object Get(String key, Object DefaultValues) {
        if (DefaultValues instanceof String) {//String
            return sharedPreferences.getString(key, (String) DefaultValues);
        }
        else if (DefaultValues instanceof Integer) {//Integer
            return sharedPreferences.getInt(key, (Integer) DefaultValues);
        }
        else if (DefaultValues instanceof Boolean) {//Boolean
            return sharedPreferences.getBoolean(key, (Boolean) DefaultValues);
        }
        else if (DefaultValues instanceof Float) {//Float
            return sharedPreferences.getFloat(key, (Float) DefaultValues);
        }
        else if (DefaultValues instanceof Long) {//Long
            return sharedPreferences.getLong(key, (Long) DefaultValues);
        }
        else{
            return "null";
        }
    }
}
